<?php

namespace Admin\Model\DBO;

use Zend\Db\TableGateway\AbstractTableGateway;
use Admin\Model\DBO\SearchBookDBO;

class CiculationManagementDBO extends AbstractTableGateway {

    private $sm;
    private $historyCiculationTable;

    public function __construct($serviceManager) {
        $this->sm = $serviceManager;
    }

    public function getHistoryCiculationTable() {
        if (!$this->historyCiculationTable) {
            $this->historyCiculationTable = $this->sm->get('Admin\Model\DAO\HistoryCiculationTable');
        }
        return $this->historyCiculationTable;
    }

    /*
     * @param: $dateTime - Thời gian cần lấy lịch sử trả
     * @return: resultSet ;(Tra ve một resultSet dạng paginatior (có thể phân trang))
     */

    public function getListData($dateTime, $status) {
        // 0 - Tài liệu mới trả và hiện đang có trong thư viện

        $resultSet = $this->getHistoryCiculationTable()->getHistoryCiculation($dateTime, $status);

        $objectSearchBook = new SearchBookDBO($this->sm);
        $allAuthor = array();
        // Lấy toàn bộ tác giả của cuốn sách
        foreach ($resultSet as $key) {
            $stringAuthor = "";
            $authors = $objectSearchBook->searchBookAuthor($key['bookBarcode']);
            foreach ($authors as $author) {
                $stringAuthor .= $author['author'] . '-';
            }
            $allAuthor[$key['bookBarcode']] = $stringAuthor;
        }
        $iteratorAdapter = new \Zend\Paginator\Adapter\Iterator($this->getHistoryCiculationTable()->getHistoryCiculation($dateTime, $status));
        $paginator = new \Zend\Paginator\Paginator($iteratorAdapter);
        return array(
            'paginator' => $paginator,
            'allAuthor' => $allAuthor,
        );
    }
     public function getListDataInMonth($dateTime, $status) {
        // 0 - Tài liệu mới trả và hiện đang có trong thư viện

        $resultSet = $this->getHistoryCiculationTable()->getHistoryCiculationInMonth($dateTime, $status);

        $objectSearchBook = new SearchBookDBO($this->sm);
        $allAuthor = array();
        // Lấy toàn bộ tác giả của cuốn sách
        foreach ($resultSet as $key) {
            $stringAuthor = "";
            $authors = $objectSearchBook->searchBookAuthor($key['bookBarcode']);
            foreach ($authors as $author) {
                $stringAuthor .= $author['author'] . '-';
            }
            $allAuthor[$key['bookBarcode']] = $stringAuthor;
        }
        $iteratorAdapter = new \Zend\Paginator\Adapter\Iterator($this->getHistoryCiculationTable()->getHistoryCiculationInMonth($dateTime, $status));
        $paginator = new \Zend\Paginator\Paginator($iteratorAdapter);
        return array(
            'paginator' => $paginator,
            'allAuthor' => $allAuthor,
        );
    }

}